package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import modelo.CargarComboProducto;
import modelo.Ingrediente;
import modelo.Orden;
import modelo.OrdenDAO;
import modelo.OrdenxProducto;
import modelo.OrdenxProductoDAO;
import modelo.Producto;
import modelo.ProductoDAO;
import modelo.Ringre;
import modelo.State;

import vista.AbstractFactory;
import vista.Ordenv;

public class Ordenc implements ActionListener {
	
 private Ordenv ordenv;
 State state;
	AbstractFactory abs;
	public Ordenc(){
	super();
	this.ordenv= new Ordenv();
	Vector<String> vicky=null;
	ProductoDAO productodao= new ProductoDAO();
	state=new CargarComboProducto();
	productodao.setState(state);
	vicky= productodao.request();
	this.ordenv.Cargar(vicky);
	abs=new Ordenv();
	this.ordenv.setLocation(480, 210);
	this.ordenv.setVisible(true);
	this.ordenv.addListener(this);

	
	}
	public void actionPerformed(ActionEvent e) {
		String actionCommand = e.getActionCommand();
		if (actionCommand.equals("Registrar")) {
			RegistrarOrden();
		}		
		else if (actionCommand.equals("Cancelar")) {
			ordenv.Limpiar();
		}
		else if (actionCommand.equals("añadir")) {
			 ordenv.getTabla().Añadir(ordenv.getCodorden(), ordenv.getCombo(), ordenv.getCantidad(),ordenv.getPrecio());
		}
		else if (actionCommand.equals("remover")) {
			 ordenv.getTabla().Eliminar(ordenv.Pos());
		}
		else if (actionCommand.equals("Calcular")) {
			 ordenv.setTotal(ordenv.getTabla().total());
			 ordenv.getTotal();
		}
		
		
	}
	
	private void RegistrarOrden(){
	  	try
		{
	    	if(ordenv.getCodcliente().equals("")|| ordenv.getTotal().equals("")||ordenv.getNombre().equals("")) 
	    		
	    		abs.mensaje("Hay Campos vacios, por favor llene todos los campos");
	    	
	    	else
	    	{
	    		OrdenxProductoDAO ordenxproductoDao= new OrdenxProductoDAO();
	    		OrdenDAO ordenDAO = new OrdenDAO();
		    	Orden orden = new Orden(ordenv.getCodorden(),ordenv.getNombre(),ordenv.getCodcliente(),Float.valueOf(ordenv.getTotal()));
		    	ordenDAO.Registrar(orden);
		    	int i=ordenv.getTabla().getRowCount();
		    	for(int j=0; j<i;j++)
		        {
		        OrdenxProducto ordenxproducto =new OrdenxProducto(ordenv.getCodorden(),ordenv.getCodcliente(),ordenv.getNombre(),Integer.valueOf(ordenv.getCantidad()));
		        ordenxproductoDao.Registrar(ordenxproducto);
		        }
		    	abs.mensaje("La Orden fue registrada con éxito");
		    	ordenv.Limpiar();
	    	}
		}catch(Exception e)
		{
			abs.mensaje("La Orden no ha sido registrada, verifique los datos");
			ordenv.Limpiar();
		}
		}
	}
